#!/usr/bin/perl -w

#=======================================================================
# commout
# File ID: 998d8948-5d37-11df-86c9-90e6ba3022ac
# Kommenterer ut stdin.
#=======================================================================

use strict;

my $comm_pattern = "";
my $is_c    = 0;
my $is_l    = 0;
my $is_html = 0;
my $is_pre  = 0;
my $is_re   = 0;
my $prog_name = "commout";
my $spc_str = "";
my $Kommentar = "";

if ($#ARGV > -1) {
    $_ = $ARGV[0];
    /^--h/ && &print_help(0) ||
    /^html$/i && ($is_html = 1) ||
    /^pre$/i && ($is_pre = 1) ||
    /^re$/i && ($is_re = 1, $is_pre = 1) ||
    /^c$/i && ($is_c = 1) ||
    /^l$/i && ($is_l = 1) ||
    ($comm_pattern = $ARGV[0]);
} else {
    $comm_pattern = '#';
}

if ($is_l) {
    my $Element = defined($ARGV[1]) ? $ARGV[1] : "l";
    while (<STDIN>) {
        chomp;
        print("<$Element>$_</$Element>\n");
    }
    exit 0;
}

defined($ARGV[1]) && ($spc_str = " ", $Kommentar = $ARGV[1]);

$is_html && print("<!--$spc_str" . $Kommentar . " \x7B\x7B\x7B\n") ||
$is_pre && printf("%s<pre>\n", $is_re ? "" : "<p>") ||
$is_c && printf("/*$spc_str" . $Kommentar . "\n");

my $Bck = "";
while (<STDIN>) {
    ($is_html || $is_pre || $is_c) || s/^([\t ]*)/$1$comm_pattern /;
    print;
    $Bck = $_;
}

if ($is_html || $is_c) {
    # Hvis stdin ikke slutta med newline, skrives en space.
    $Bck =~ /\n$/ || print(" ");
}

$is_html && print("\x7D\x7D\x7D -->\n") ||
$is_pre && print("</pre>\n") ||
$is_c && print(" */\n");

sub print_help {
    my $Retval = shift;

    print <<END;
Syntax:

$prog_name
  For bruk i bl.a. perl og sh. Setter '#' foran hver linje.

$prog_name html ["Overskrift"]
  HTML-source.

$prog_name pre
  Også til html, men <p><pre> brukes istedenfor.

$prog_name re
  Som "pre", men uten <p> i begynnelsen.

$prog_name c
  C-kode. Setter inn /* */ .

$prog_name l [tag]
  XML-elementer. Setter inn <l> hvis ingenting skrives som parametere.

$prog_name [andre_ting]
  Setter [andre_ting] foran hver linje.

END
    exit($Retval);
} # print_help()

# vim: set ts=4 sw=4 sts=4 et fenc=utf8 fo+=w2 :
